This invention relates to software driver programs which couple an I/O channel to an operating system for a digital computer.
An example of how an I/O channel is typically coupled in the prior art to an operating system for a digital computer, is shown in FIG. 1. In the FIG. 1 example, the I/O channel is a fiber channel which is indicated by reference numeral 10; and, the digital computer is an Intel X86 instruction processor which is indicated by reference numeral 11.
A semiconductor memory 12 is connected to the instruction processor 11 by an X86 bus 13; and stored within the memory 12 are several software programs. Program 14 in the memory 12 is a native operating system. Programs 15-1 thru 15-N are several different application programs which run under the control of the native operating system 14. In FIG. 1, the native operating system is shown as the Microsoft NT operating system, as an example.
Each application program includes one or more NT I/O instructions which interact with I/O devices on the fiber channel 10; and each such NT I/O instruction is sent to the NT operating system for execution. During that execution of an NT I/O instruction, two additional components 20 and 21 within the FIG. 1 system are used. Component 20 is an I/O circuit on a printed circuit board which connects the fiber channel 10 to the X86 bus 13; and component 21 is a native driver program which intercouples the I/O circuit 20 to the native operating system 14.
Typically, the I/O circuit 20 and the native driver program 21 are commodity items which are made by several manufacturers. By comparison, the native operating system 14 is a non-commodity item which is made by a single manufacturer. Each manufacturer of the I/O circuit 20 is forced to provide their own native driver program 21 with an interface 21a that is compatible with the native operating system 14, in order to sell their I/O circuit 20.
However, each manufacturer of the I/O circuit 20 only makes a corresponding native driver program 21 for those operating systems which are the most popular and in high use. Thus in the prior art, a manufacturer of an operating system which is unpopular had to write its own special purpose driver program in order to utilize the I/O circuit 20.
The above problem is faced, for example, by manufacturers of legacy instruction processors and legacy operating systems, which were very popular in the past but which lost their popularity over the years. One such legacy instruction processor is the 2200, and it has a legacy 2200 operating system. They are made and sold by Unisys Corporation.
In addition, the above problem is made worse due to the fact that the I/O circuit 20 frequently changes. These changes are made to reduce cost and to improve performance. Also, the changes are made to connect to new I/O channels, whenever they are defined.
To accommodate the above circuit changes with a legacy operating system, the corresponding special purpose driver program needs to be changed by the vendor of the legacy operating system. But changing the special purpose driver program, to match each change in the I/O circuit 20, is a large effort. Further, any change in the special purpose driver program is prone to errors that can show up after the driver is in a product that has been shipped to many customers.
Accordingly, a primary object of the present invention is to provide a solution to the above problems.
In accordance with the present invention, a computer system is comprised of the following components: 1) a legacy instruction processor that executes a legacy I/O instruction under the control of a legacy operating system; 2) a native driver program, for an I/O circuit that connects to an I/O channel, which has a native operating system interface that is incompatible with the legacy operating system; and 3) an adapter program which is interposed between the native driver program and the legacy operating system.
In operation, the legacy operting system executes the legacy I/O instruction by sending control structures to the adapter program, but those control structures are in a format which is not recognized by the native driver program. To accommodate this mismatch, the adapter program has an interface to the native driver program which simulates the native operating system interface. Thru this simulated interface, the adapter program is able to perform the legacy I/O instruction by interacting with the native driver program.
One feature of the above computer system is that no special purpose driver program needs to be written for the legacy operating system. Instead, the adapter program has an interface which simulates the native operating system; and consequently, that interface will operate with the native driver program during the execution of the legacy I/O instruction from the legacy computer.
Another feature of the above computer system is that any changes to the I/O circuit which connects to the I/O channel are readily accommodated. Such changes are made to reduce cost, or improve performance, or connect to new I/O channels. But those I/O circuit changes have no effect on the native operating system interface which is simulated by the adapter program; and thus they have no effect on the adapter program.